home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / log_cut / log_cut.bas < prev    next >
BASIC Source File  |  1993-07-08  |  5KB  |  143 lines

  1. 1000 '
  2. 1010 '  ログファイル分割保存プログラム   ver. 1.02
  3. 1020 '
  4. 1030 '    CcsCpyで処理されたログファイルを、ボード毎に分割して
  5. 1040 '  保存する。
  6. 1050 '
  7. 1060 '    分割するボード名については、別ファイルに記録されている。
  8. 1070 '
  9. 1080 '    分割後のログファイルでも、CcsCpyで閲覧できるように、
  10. 1090 '  キーコード"*****"も同時に保存する。
  11. 1100 '
  12. 1110 *RESTART
  13. 1120 DIM BUFFER$(11)                  '先読みバッファ
  14. 1130 CLS:ON ERROR GOTO *ERROR_CORRECT
  15. 1140 LOCATE 20,2:PRINT "汎用(?)ログ・カッター    Version 1.02"
  16. 1150 LOCATE 20,3:PRINT "                         1993 2/23     by SCC-PON"
  17. 1160 '
  18. 1170 'ボード・リストの読み込み
  19. 1180 '
  20. 1190 ER_FLAG=2:LOCATE 0,5
  21. 1200 LINE INPUT "ボード・リストのファイル名は ? ",A$
  22. 1210 OPEN "I",#1,A$             'ボード・リストをオープン
  23. 1220 INPUT #1,BRD_NO
  24. 1230 DIM BRD_NAME$(BRD_NO),BRD_FILE$(BRD_NO)
  25. 1240 FOR I=1 TO BRD_NO
  26. 1250     INPUT #1,BRD_NAME$(I),BRD_FILE$(I)
  27. 1260 NEXT
  28. 1270 CLOSE #1:ER_FLAG=0
  29. 1280 '
  30. 1290 '
  31. 1300 'ログファイルのオープン
  32. 1310 '
  33. 1320 *SET_LOG_FILE
  34. 1330 LOCATE 0,6
  35. 1340 LINE INPUT "ログ・ファイルのファイル名は ? ",LD_FILE$
  36. 1350 OPEN "I",#1,LD_FILE$
  37. 1360 '
  38. 1370 '
  39. 1380 GOSUB *GET_LINE                            'CcsCpy未処理のログか判定
  40. 1390 IF KINSTR(A_LINE$,"*****")=0 THEN ERROR 251
  41. 1400 F_ARTICLE=1
  42. 1410 *LOOP0
  43. 1420 '
  44. 1430 'アーティクルの確定
  45. 1440 '
  46. 1450    WHILE FLAG=0 AND NEW_BRD=0
  47. 1460       GOSUB *GET_LINE:BUFFER$(0)=A_LINE$
  48. 1470       I=0
  49. 1480       WHILE F_ARTICLE<2 AND I<10 AND EOF(1)=0 AND FLAG=0
  50. 1490          IF KINSTR(BUFFER$(I),"*****")>0 THEN F_ARTICLE=F_ARTICLE+1
  51. 1500          K=1
  52. 1510          *FOR_NEXT_1
  53. 1520             IF KINSTR(BUFFER$(I),BRD_NAME$(K))<>0 THEN
  54. 1530                     SV_FILE$=BRD_FILE$(K):FLAG=1:GOTO *TRAP1
  55. 1540             ENDIF
  56. 1550          K=K+1:IF K<=BRD_NO THEN *FOR_NEXT_1
  57. 1560          I=I+1
  58. 1570          GOSUB *GET_LINE:BUFFER$(I)=A_LINE$
  59. 1580       *TRAP1
  60. 1590       WEND
  61. 1600       IF KLEN(SV_FILE$)>0 THEN
  62. 1610           IF NOW_DISPLAY=1 THEN
  63. 1620           LOCATE 0,12:PRINT STRING$(78," "):NOW_DISPLAY=0
  64. 1630           ENDIF
  65. 1640       ELSE
  66. 1650           BEEP 1
  67. 1660           LOCATE 0,12
  68. 1670           PRINT "新規ボードがあります。登録を変更してください。"
  69. 1680           NEW_BRD=1:NOW_DISPLAY=1:BEEP 0
  70. 1690       ENDIF
  71. 1700    WEND
  72. 1710    FLAG=0
  73. 1720    IF NEW_BRD=1 THEN *NEW_BRD 
  74. 1730 '
  75. 1740 ' アーティクル書き込み
  76. 1750 '
  77. 1760    IF LAST_SV$<>SV_FILE$ THEN
  78. 1770       LOCATE 0,10:PRINT STRING$(78," ")
  79. 1780       LOCATE 0,10:PRINT "現在処理中のボード : ";SV_FILE$
  80. 1790    ENDIF
  81. 1800    OPEN "A",#2,SV_FILE$
  82. 1810    FOR J=0 TO I
  83. 1820        PRINT #2,BUFFER$(J)
  84. 1830    NEXT
  85. 1840    GOSUB *GET_LINE:BUFFER$(0)=A_LINE$
  86. 1850    WHILE F_ARTICLE<2 AND EOF(1)=0
  87. 1860        PRINT #2,BUFFER$(0)
  88. 1870        GOSUB *GET_LINE:BUFFER$(0)=A_LINE$
  89. 1880        IF BUFFER$(0)="*****" THEN PRINT #2,BUFFER$(0):F_ARTICLE=F_ARTICLE+1
  90. 1890    WEND
  91. 1900 *NEW_BRD
  92. 1910    F_ARTICLE=1:NEW_BRD=0:LAST_SV$=SV_FILE$:SV_FILE$=""
  93. 1920    CLOSE #2
  94. 1930 '
  95. 1940 '
  96. 1950 GOTO *LOOP0
  97. 1960 '
  98. 1970 END
  99. 1980 '
  100. 1990 '
  101. 2000 '
  102. 2010 *ERROR_CORRECT
  103. 2020 CLOSE #1:CLOSE #2:F_ARTICLE=0:FLAG=0:SV_FILE$=""
  104. 2030 IF ERR=251 THEN
  105. 2040        COLOR 2:BEEP:LOCATE 0,14
  106. 2050        PRINT " CcsCpyで、未処理のログファイルです。"
  107. 2060        COLOR 7:ER_FLAG=1
  108. 2070 ENDIF
  109. 2080 IF (ERR=54 AND ER_FLAG<>2) OR ER_FLAG=1 THEN
  110. 2090        ER_FLAG=0
  111. 2100        LOCATE 0,15:PRINT "正常終了(のはず(^^;)"
  112. 2110        PRINT "同じネットのログを処理しますか?([Y]/N)";
  113. 2120        YN$=INPUT$(1):PRINT YN$
  114. 2130        IF YN$="Y" OR YN$="y" OR YN$=CHR$(13) THEN
  115. 2140                   LOCATE 0, 6:PRINT STRING$(78," ")
  116. 2150                   LOCATE 0,10:PRINT STRING$(78," ")
  117. 2160                   LOCATE 0,12:PRINT STRING$(78," ")
  118. 2170                   LOCATE 0,14:PRINT STRING$(78," ")
  119. 2180                   LOCATE 0,15:PRINT STRING$(78," ")
  120. 2190                   LOCATE 0,16:PRINT STRING$(78," ")
  121. 2200                   RESUME *SET_LOG_FILE
  122. 2210                   ENDIF
  123. 2220        PRINT "別のネットのログを処理しますか?([Y]/N)";
  124. 2230        YN$=INPUT$(1):PRINT YN$
  125. 2240        IF YN$="Y" OR YN$="y" OR YN$=CHR$(13) THEN
  126. 2250                   ERASE BRD_NAME$,BRD_FILE$,BUFFER$:RESUME *RESTART
  127. 2260                   ENDIF
  128. 2270 ELSE IF ERR=54 AND ER_FLAG=2 THEN
  129. 2275        PRINT "ボード・リストの記述に不足があります。"
  130. 2277 ELSE
  131. 2280        PRINT "エラー発生 エラーコード:";ERR,"発生行:";ERL
  132. 2290 ENDIF
  133. 2300 WAIT 150:END
  134. 2310 *GET_LINE
  135. 2320      A_LINE$="":A_CHR$=""
  136. 2330      A_CHR$=INPUT$(1,#1)
  137. 2340      WHILE A_CHR$<>CHR$(&H0D)
  138. 2350           A_LINE$=A_LINE$+A_CHR$
  139. 2360           A_CHR$=INPUT$(1,#1)
  140. 2370      WEND
  141. 2380      A_CHR$=INPUT$(1,#1)
  142. 2390 RETURN
  143.